Label (k8s)
Kubernetes Resourceに付与できる key/value形式のメタデータ
リソースの選択や分類に使う
Tag (dd)みたいなものねmrsekut.icon
例
code:yaml
metadata:
labels:
app: nginx
env: production
version: v1
参考
/mrsekut-book-4873119014/200: 9章 Podの管理
#wip
/mrsekut-book-4873119014/201: 9.1.2 セレクタ
/mrsekut-book-4873119014/202: 9.1.3 セレクタの高度な使い方
/mrsekut-book-4873119014/203: 9.1.4 Labelの他の使い方
GPT-4.icon
🧭 ラベルの主な用途
1. PodやServiceのグルーピング
たとえば、app=nginx のPodを対象にServiceを定義することで、そのPod群にトラフィックを流すことができます。
code:yaml
selector:
matchLabels:
app: nginx
2. Deploymentのローリングアップデート制御
version=v1 などでバージョン管理を行い、段階的に新しいPodへ切り替えるなどが可能。
3. Monitoring/Loggingの対象絞り込み
PrometheusやDatadogなどの監視ツールが、ラベルに基づいて対象のPodを検出・区別します。
4. 運用や可視化ツールのフィルタリング
kubectl get pods -l app=nginx のように、特定のラベルを持つリソースだけを一覧表示できます。
🧪 実用例
Podへのラベル付与
code:yaml
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
labels:
app: nginx
env: dev
Serviceでのラベルセレクタ
code:yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx # このラベルを持つPodを対象にする
ports:
- protocol: TCP
port: 80
targetPort: 80
🏷 ラベルの命名ルール(制約)
キーの形式はオプションのプレフィックス付き:<prefix>/<name>
プレフィックスはDNS形式(例:example.com/env)
名前部分(envなど)は英小文字、数字、-、_、. を使える
値は最大63文字まで
❗️LabelとAnnotationの違い
table:_
項目 Label Annotation
用途 フィルタ・選択・検索 メタデータの記録用(検索には使わない)
例 app=web, tier=frontend kubectl.kubernetes.io/last-applied-configuration
インデックス化 ✅(効率的な検索が可能) ❌(非効率)
🛠️ Tips
複数のラベルでPodを絞り込みたい場合:
$ kubectl get pods -l app=nginx,env=production
ラベルの更新:
$ kubectl label pod my-pod version=v2